package com.lagou.esweb.mvc.doc;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Data
@Document(indexName = "lagou-position", replicas = 0)
public final class PositionDoc implements Serializable {

    @Field(value = "companyName")
    private String companyName;

    @Id
    @Field(value = "id")
    private Long id;

    @Field(value = "positionAdvantage", type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
    private String positionAdvantage;

    @Field(value = "companyId")
    private Long companyId;

    @Field(value = "positionName", type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
    private String positionName;

    @Field(value = "salary")
    private String salary;

    @Field(value = "salaryMin")
    private BigDecimal salaryMin;

    @Field(value = "salaryMax")
    private BigDecimal salaryMax;

    @Field(value = "salaryMonth")
    private BigDecimal salaryMonth;

    @Field(value = "education")
    private String education;

    @Field(value = "companyName")
    private String workYear;

    @Field(value = "companyName")
    private String jobNature;

    @Field(value = "chargeField")
    private String chargeField;

    @Field(value = "createTime")
    private Date createTime;

    @Field(value = "email")
    private String email;

    @Field(value = "publishTime")
    private String publishTime;

    @Field(value = "isEnable")
    private Integer isEnable;

    @Field(value = "isIndex")
    private Integer isIndex;

    @Field(value = "city")
    private String city;

    @Field(value = "orderby")
    private Long orderby;

    @Field(value = "isAdvice")
    private Integer isAdvice;

    @Field(value = "showorder")
    private Long showorder;

    @Field(value = "publishUserId")
    private Long publishUserId;

    @Field(value = "workAddress")
    private String workAddress;

    @Field(value = "generateTime")
    private Date generateTime;

    @Field(value = "bornTime")
    private String bornTime;

    @Field(value = "isReward")
    private Integer isReward;

    @Field(value = "rewardMoney")
    private String rewardMoney;

    @Field(value = "isExpired")
    private Integer isExpired;

    @Field(value = "positionDetailPV")
    private Integer positionDetailPV;

    @Field(value = "offlineTime")
    private Date offlineTime;

    @Field(value = "positionDetailPVCnbeta")
    private Integer positionDetailPVCnbeta;

    @Field(value = "adviceTime")
    private Date adviceTime;

    @Field(value = "comeFrom")
    private String comeFrom;

    @Field(value = "receivedResumeCount")
    private Integer receivedResumeCount;

    @Field(value = "refuseResumeCount")
    private Integer refuseResumeCount;

    @Field(value = "markCanInterviewCount")
    private Integer markCanInterviewCount;

    @Field(value = "haveNoticeInterCount")
    private Integer haveNoticeInterCount;

    @Field(value = "isForbidden")
    private Integer isForbidden;

    @Field(value = "reason")
    private String reason;

    @Field(value = "verifyTime")
    private Date verifyTime;

    @Field(value = "adWord")
    private Integer adWord;

    @Field(value = "adRankAndTime")
    private String adRankAndTime;

    @Field(value = "adTimes")
    private Integer adTimes;

    @Field(value = "adStartTime")
    private Date adStartTime;

    @Field(value = "adEndTime")
    private Date adEndTime;

    @Field(value = "adBeforeDetailPV")
    private Integer adBeforeDetailPV;

    @Field(value = "adAfterDetailPV")
    private Integer adAfterDetailPV;

    @Field(value = "adBeforeReceivedCount")
    private Integer adBeforeReceivedCount;

    @Field(value = "adAfterReceivedCount")
    private Integer adAfterReceivedCount;

    @Field(value = "adjustScore")
    private BigDecimal adjustScore;

    @Field(value = "weightStartTime")
    private Date weightStartTime;

    @Field(value = "weightEndTime")
    private Date weightEndTime;

    @Field(value = "isForward")
    private Integer isForward;

    @Field(value = "forwardEmail")
    private String forwardEmail;

    @Field(value = "isSchoolJob")
    private String isSchoolJob;

    @Field(value = "type")
    private Integer type;

    @Field(value = "prolongOfflineTime")
    private Date prolongOfflineTime;

}
